package lpca.utils 
{
	/**
	 * ...
	 * @author D.Shakshin
	 * Маршрут
	 */
	public class Trace implements ITrace
	{
		protected var track: Vector.<Point>; //стек точек маршрута		
		
		/**
		 * 
		 * @param	stag: coordinate
		 * @return	void
		 */
		public function  push(stag: Point): void //добавить точку в стек
		{
			if (stag != null)
				track.push(new Point(stag.x, stag.y));
		}
		
		public function  pop(): Point // извлечь точку из стека
		{	
			if (track.length > 0)
				return (track.pop());
			else	
				return null;
		}
		
		public function Trace() 
		{ 
			track = new Vector.<Point>();
		}
		
		public function getLength(): int
		{
			return track.length;
		}
		public function getVector(): Vector.<Point>
		{
			return track;
		}
		
		public function show():void //вывод отладочной информации без очистки стека
		{
			if (track != null)
				{
					trace("----PATH:----")
					trace("|x-||-y-|");
					var curPoint: Point;
					for (var i: int = track.length-1; i >= 0;i--)
						{
							curPoint = track[i]
							if (curPoint != null) 
								trace(curPoint.x.toString() + "  |  "+curPoint.y.toString());
						}
				}
		}
	}

}
